﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entities;
using System.Windows.Forms;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxClasses.Internal;
using DevExpress.Web.ASPxEditors;

public partial class pUsuarioModificarDatos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (cmbUsuarioCalle.IsCallback)
            if (cmbUsuarioCalle.Text.Length > 1)
                CargarCombosUsuario();

        if (!Page.IsPostBack)
        {
            if (Session["Email"] != null)
                Master.UsuarioRegistrado(Session["Email"].ToString());
            lblError.Visible = false;
            lblActualizacionOK.Visible = false;
            lblIDNegocio.Text = Request["IDNegocio"];
            CargarCombosUsuarioPrimeraVez();
            if (Request["Email"] != null)
            {
                trPassword.Visible = false;
                lblEmail.Text = Request["Email"];
                CargarDatosUsuario();
                CargarCombosUsuario();      
            }
            
        }
    }

    private void CargarDatosUsuario()
    {
        try
        {
            var oUsuario = UsuarioNegocio.BuscarUsuarioNegocioPorEmail(lblEmail.Text);
            txtUsuarioNombre.Text = oUsuario.Nombre;
            txtUsuarioApellido.Text = oUsuario.Apellido;
            txtUsuarioDNI.Text = oUsuario.DNI.ToString();
            txtNegocioEmail.Text = oUsuario.Email;
            txtUsuarioTelefono.Text = oUsuario.Telefono;
            cmbUsuarioProvincia.Text = oUsuario.Provincia.NombreProvincia;
            cmbUsuarioPais.Text =  oUsuario.Pais.NombrePais;
            cmbCargo.Text = oUsuario.UsuarioTipo.Nombre;
            //Setea los datos de la dirección
            oUsuario.Direccion = Direccion.BuscarUno(oUsuario.Direccion.IDDireccion);
            cmbNegocioBarrio.Text = oUsuario.Direccion.Barrio.NombreBarrio;
            cmbUsuarioCalle.Text = oUsuario.Direccion.Calle.NombreCalle;
            txtUsuarioDepartamento.Text = oUsuario.Direccion.Departamento;
            cmbUsuarioLocalidad.Text = oUsuario.Direccion.Localidad.NombreLocalidad;
            txtUsuarioNumero.Text = oUsuario.Direccion.Numero.ToString();
            txtUsuarioPiso.Text = oUsuario.Direccion.Piso;
        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método cargar negocio, Descripción de error: " + ex.Message;
        }
    }


    private void CargarCombosUsuario()
    {
        if (cmbUsuarioCalle.Text != null)
        {
            cmbUsuarioCalle.DataSource = Calle.BuscarPorLocalidadNombre(long.Parse(cmbUsuarioLocalidad.Value.ToString()), cmbUsuarioCalle.Text);
        }
        else
        {
            cmbUsuarioCalle.DataSource = Calle.BuscarPorLocalidadNombre(long.Parse(cmbUsuarioLocalidad.Value.ToString()), string.Empty);
        }
        cmbUsuarioCalle.DataBind();
    }

    private void CargarCombosUsuarioPrimeraVez()
    {
        cmbCargo.Items.Add(new DevExpress.Web.ASPxEditors.ListEditItem("Vendedor", 4));
        cmbCargo.Items.Add(new DevExpress.Web.ASPxEditors.ListEditItem("Repartidor", 3));
        cmbCargo.Items[1].Selected = true;

        cmbNegocioBarrio.DataSource = Barrio.BuscarTodos();
        cmbNegocioBarrio.DataBind();
        cmbNegocioBarrio.Items[0].Selected = true;

        cmbUsuarioPais.DataSource = Pais.BuscarTodos();
        cmbUsuarioPais.DataBind();
        cmbUsuarioPais.Items[0].Selected = true;

        cmbUsuarioProvincia.DataSource = Provincia.BuscarPosPais(int.Parse(cmbUsuarioPais.SelectedItem.Value.ToString()));
        cmbUsuarioProvincia.DataBind();
        cmbUsuarioProvincia.Items[0].Selected = true;

        cmbUsuarioLocalidad.DataSource = Localidad.BuscarPorProvincia(long.Parse(cmbUsuarioProvincia.SelectedItem.Value.ToString()));
        cmbUsuarioLocalidad.DataBind();
        cmbUsuarioLocalidad.Items[0].Selected = true;

        cmbUsuarioCalle.DataSource = Calle.BuscarPorLocalidad(long.Parse(cmbUsuarioLocalidad.SelectedItem.Value.ToString()));
        cmbUsuarioCalle.DataBind();
    }

    private long GuardarNuevoUsuario()
    {
        long longIDUsuario = 0;
        try
        {
            var oUsuario = new UsuarioNegocio(true);
            oUsuario.Nombre = txtUsuarioNombre.Text;
            oUsuario.Apellido = txtUsuarioApellido.Text;
            oUsuario.DNI = long.Parse(txtUsuarioDNI.Text);
            oUsuario.Contraseña = txtContraseña.Text;
            oUsuario.Email = txtNegocioEmail.Text;
            oUsuario.Telefono = txtUsuarioTelefono.Text;
            oUsuario.Provincia.IDProvincia = long.Parse(cmbUsuarioProvincia.Value.ToString());
            oUsuario.Pais.IDPais = long.Parse(cmbUsuarioPais.Value.ToString());
            oUsuario.FechaAlta = System.DateTime.Now;
            oUsuario.UsuarioTipo.IDUsuarioTipo = long.Parse(cmbCargo.Value.ToString());
            oUsuario.Negocio.IDNegocio = long.Parse(lblIDNegocio.Text);
            //Setea los datos de la dirección
            oUsuario.Direccion = new Direccion(true);
            oUsuario.Direccion.Calle.IDCalle = long.Parse(cmbUsuarioCalle.Value.ToString());
            oUsuario.Direccion.Departamento = txtUsuarioDepartamento.Text;
            oUsuario.Direccion.Barrio.IDBarrio = long.Parse(cmbNegocioBarrio.Value.ToString());
            oUsuario.Direccion.Localidad.IDLocalidad = long.Parse(cmbUsuarioLocalidad.Value.ToString());
            oUsuario.Direccion.Numero = int.Parse(txtUsuarioNumero.Text);
            oUsuario.Direccion.Piso = txtUsuarioPiso.Text;
            //Guarda el usuario
            longIDUsuario = UsuarioNegocio.Nuevo(oUsuario);
            return longIDUsuario;

        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método guardar negocio, Descripción de error: " + ex.Message;
            return longIDUsuario;
        }
    }

    private void ModificarDatosUsuario()
    {
        try
        {
            var oUsuario = UsuarioNegocio.BuscarUsuarioNegocioPorEmail(lblEmail.Text);
            oUsuario.Nombre = txtUsuarioNombre.Text;
            oUsuario.Apellido = txtUsuarioApellido.Text;
            oUsuario.DNI = long.Parse(txtUsuarioDNI.Text);
            oUsuario.Email = txtNegocioEmail.Text;
            oUsuario.Telefono = txtUsuarioTelefono.Text;
            oUsuario.Provincia.IDProvincia = long.Parse(cmbUsuarioProvincia.Value.ToString());
            oUsuario.Pais.IDPais = long.Parse(cmbUsuarioPais.Value.ToString());
            oUsuario.UsuarioTipo.IDUsuarioTipo = long.Parse(cmbCargo.Value.ToString());
            oUsuario.Negocio.IDNegocio = long.Parse(lblIDNegocio.Text);
            //Setea los datos de la dirección
            oUsuario.Direccion.Calle.IDCalle = long.Parse(cmbUsuarioCalle.Value.ToString());
            oUsuario.Direccion.Departamento = txtUsuarioDepartamento.Text;
            oUsuario.Direccion.Barrio.IDBarrio = long.Parse(cmbNegocioBarrio.Value.ToString());
            oUsuario.Direccion.Localidad.IDLocalidad = long.Parse(cmbUsuarioLocalidad.Value.ToString());
            oUsuario.Direccion.Numero = int.Parse(txtUsuarioNumero.Text);
            oUsuario.Direccion.Piso = txtUsuarioPiso.Text;
            UsuarioNegocio.Modificar(oUsuario);

        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método modificar datos usuario, Descripción de error: " + ex.Message;
        }
    }

    #region eventos

    protected void cmbUsuarioCalle_Callback1(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
    {
        CargarCombosUsuario();
    }

    protected void btnPopConfirmar_Click(object sender, EventArgs e)
    {
        if (lblEmail.Text == "0")
        {
            if (GuardarNuevoUsuario() > 0)
            {
                lblActualizacionOK.Visible = true;
            }
        }
        else
        {
            ModificarDatosUsuario();
            lblActualizacionOK.Visible = true;
        }
                if (Request["Regresa"] != null)
        {
            if (Request["Regresa"] == "DefaultNegocio")
            {
                Response.Redirect("pDefaultNegocio.aspx?IDNegocio=" + lblIDNegocio.Text);
            }
        }
        else
        {
                Response.Redirect("pNegocioUsuario.aspx?IDNegocio=" + lblIDNegocio.Text);
        }
    }

    protected void cmbUsuarioProvincia_SelectedIndexChanged1(object sender, EventArgs e)
    {
        cmbUsuarioLocalidad.DataSource = Localidad.BuscarPorProvincia(long.Parse(cmbUsuarioProvincia.SelectedItem.Value.ToString()));
        cmbUsuarioLocalidad.DataBind();
        cmbUsuarioLocalidad.Items[0].Selected = true;
        CargarCombosUsuario();
        cmbUsuarioCalle.Text = string.Empty;
    }

    protected void cmbUsuarioPais_SelectedIndexChanged(object sender, EventArgs e)
    {
        cmbUsuarioProvincia.DataSource = Provincia.BuscarPosPais(int.Parse(cmbUsuarioPais.SelectedItem.Value.ToString()));
        cmbUsuarioProvincia.DataBind();
        cmbUsuarioLocalidad.DataSource = Localidad.BuscarPorProvincia(long.Parse(cmbUsuarioProvincia.SelectedItem.Value.ToString()));
        cmbUsuarioLocalidad.DataBind();
        CargarCombosUsuario();
        cmbUsuarioCalle.Text = string.Empty;
    }

    protected void btnSiguiente_Click(object sender, EventArgs e)
    {
        if (Request["Regresa"] != null)
        {
            if (Request["Regresa"] == "DefaultNegocio")
            {
                Response.Redirect("pDefaultNegocio.aspx?IDNegocio=" + lblIDNegocio.Text);
            }
        }
        else
        {
                Response.Redirect("pNegocioUsuario.aspx?IDNegocio=" + lblIDNegocio.Text);
        }
    }

        
    }
    #endregion


